package org.budo.dubbo.protocol.http.authentication;

import java.io.Serializable;

/**
 * 检查当前请求用户的服务的抽象，具体实现中从Session/Cookie/Token/Header等中获取
 * 
 * @author lmw
 */
public interface AuthenticationCheckService {
    /**
     * 成功时返回当前用户ID，失败时返回Fail枚举
     */
    Serializable getAuthenticationPrincipal();

    /**
     * 失败原因
     */
    enum Fail {
        /**
         * 请求未传递 Token 参数
         */
        TOKEN_EMPTY,

        /**
         * 无效的 Token
         */
        TOKEN_NOT_FOUND,

        /**
         * 过期的Token
         */
        TOKEN_EXPIRED,

        /**
         * Session 无效
         */
        @Deprecated
        SESSION_INVALID
    }
}